As technology has advanced, computers have increasingly been used for more and more tasks including content output and display. While computers enable rendering of higher resolution and higher definition content, computers have in some cases been used to make unauthorized copies of digital content. Unauthorized copied content may then be distributed through the Internet thereby depriving the content creators and distributors of valuable business and revenue.
In the past, the sheer large size of raw uncompressed content was itself an obstacle to easy copying and transferring of unauthorized content. With recent increases in the availability of both hardware and software compression technologies, increases in memory, and increases in bandwidth, transferring unauthorized copies of digital content has become much easier and more prevalent.
One conventional solution has been to allocate a large chunk of memory for content storage and to protect that large chunk of memory. However, modern operating systems generally partition memory into small segments, such as pages, resulting in this large chunk of memory (allocated for content) being placed outside the management of the operating system. This results in a large portion of the memory being unavailable for use by the operating system thereby negatively impacting system performance. Another solution has been to specify (at boot time) a size of a protected region for the digital content that remains fixed during the power on state of the device. The size of the region is conservatively estimated to cover the worst case scenario of the size needed for storing and displaying the content. Both solutions result in large chunks of memory not being usable for long periods. The memory is not available for use even when the content is not being rendered. These approaches also reduce the size of the memory being managed by the operating system and thereby increase memory pressure of other unrelated processes.
Another solution has been to specify the size of the protected region at boot time and adjust the size of the protected region by increasing or decreasing it as needed based on the size of the content. However, given the dynamic nature of memory allocation and memory fragmentation resulting from memory allocation operations, it is difficult for the operating system to allocate a contiguous region of memory for the content. Better approaches are needed.